import cal from '@/utils/calculation';
import store from "@/store";
import de from "element-ui/src/locale/lang/de";
import i18n from "@/lang";
import he from "element-ui/src/locale/lang/he";

/**
 * 获取国家的信息
 * @returns {[{icon: *, currency: string, label: string, value: string},{icon: *, currency: string, label: string, value: string},{icon: *, currency: string, label: string, value: string},{icon: *, currency: string, label: string, value: string}]}
 */
export function getCountry(){
  return [
    {
      value: 'MLB',
      label: '巴西',
      icon: require('@/assets/images/country/br.png'),
      currency: 'BRL',
    },
    {
      value: 'MLC',
      label: '智利',
      icon: require('@/assets/images/country/cl.png'),
      currency: 'CLP',
    },
    // {
    //   value: 'cn',
    //   label: '中国',
    //   icon: require('@/assets/images/country/cn.png')
    // },
    {
      value: 'MCO',
      label: '哥伦比亚',
      icon: require('@/assets/images/country/co.png'),
      currency: 'COP',
    },
    {
      value: 'MLM',
      label: '墨西哥',
      icon: require('@/assets/images/country/mx.png'),
      currency: 'MXN',
    },
    // {
    //   value: 'us',
    //   label: '美国',
    //   icon: require('@/assets/images/country/us.png')
    // },
  ];
}

/**
 * 获取国家对应的图标
 * @param country
 * @returns {*|string}
 */
export function getCountryIcon(country){
  const countryList = getCountry()
  for (const countryListElement of countryList) {
    if(countryListElement.value === country){
      return countryListElement.icon
    }
  }
  return '';
}
/**
 * 获取国家对应的货币
 * @param country
 * @returns {*|string}
 */
export function getCountryCurrency(country){
  const countryList = getCountry()
  for (const countryListElement of countryList) {
    if(countryListElement.value === country){
      return countryListElement.currency
    }
  }
  return '';
}

/**
 * 格式化时间
 * @param fmt
 * @param date
 * @returns {*}
 */
export function dateFormat(fmt, date) {
  let ret
  const opt = {
    'y+': date.getFullYear().toString(), // 年
    'M+': (date.getMonth() + 1).toString(), // 月
    'd+': date.getDate().toString(), // 日
    'H+': date.getHours().toString(), // 时
    'm+': date.getMinutes().toString(), // 分
    's+': date.getSeconds().toString(), // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  }
  for (let k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt)
    if (ret) {
      fmt = fmt.replace(
        ret[1],
        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
      )
    }
  }
  return fmt
}


/**
 * 格式化数字
 * 如果大于1000 返回1k 缩写
 * @param num
 * @returns {*|string}
 */
export function attrNumber(num){
  let num1 = Number(num)
  // 如果是NaN直接返回原数字
  if(isNaN(num1)){
    return num
  }
  // 小于1000不用转
  if(num1 < 1000){
    return num
  }
  // 四舍五入保留2位
  num1 = (num / 1000).toFixed(2);
  return num1 + 'k';
}


/**
 * 新标签跳转到特定的url
 * @param url
 */
export function jumpLink(url){
  if(!url){
    return;
  }
  window.open(url,'_blank')
}

/**
 * 跳转到采购使用详情
 */
export function jumpProcureHelp(){
  const { href } = this.$router.resolve({
    name: 'procureHelp',
  })
  window.open(href,'_blank')
}


/**
 * 获取系统时间戳
 * @returns {any}
 */
export function getSystemTime(){
  return store.getters.systemTime
}

/**
 * 获取Date对象
 * @returns {Date}
 */
export function getSystemDate(){
  let time = getSystemTime()
  return new Date(time);
}

/**
 * 获取目标时区的对应时间
 * @param timezone 目标时区时间，西六区  东时区正数 西市区负数
 */
export function getTargetDate(timezone = -6){
  let offset_GMT = getSystemDate().getTimezoneOffset(); // 本地时间和格林威治的时间差，单位为分钟
  let nowDate = getSystemDate().getTime(); // 本地时间距 1970 年 1 月 1 日午夜（GMT 时间）之间的毫秒数
  return new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
}

/**
 * 根据站点获取对应的时区
 * @returns {number}
 */
export function getTargetTimezone(siteId = null){
  siteId = siteId !== null ? siteId : store.getters.siteId
  switch (siteId){
    case 'MX':
      return -6;
    case 'CL':
      return -3;
    case 'BR':
      return -3;
    default:
      return -6;
  }
}

/**
 * 获取时间的城市名字
 * @returns {string}
 */
export function getTimeCityName(){
  const siteId = store.getters.siteId
  switch (siteId){
    case 'MX':
      return i18n.t(`navbar.mexicoCityTime`);
    case 'CL':
      return '智利';
    case 'BR':
      return '巴西';
  }
}

/**
 * 判断是否演示环境
 * @returns {boolean}
 */
export function isTesting(){
  return process.env.VUE_APP_TESTING === 'testing'
}

/**
 * 获取仓库名字
 * @returns {*|string}
 */
export function getWareHouseName(){
  if(store && store.getters.warehouseName){
    return store.getters.warehouseName
  }
  return process.env.VUE_APP_WAREHOUSE_NAME || '仓库'
}


/**
 * 获取商品的体积重
 * @param goods
 * @returns {number}
 */
export function calGoodsVolumeWeight(goods){
  let weight = goods.weight;
  let length = goods.length;
  let width = goods.width;
  let height = goods.height;
  const volume = Math.round(length * width * height / 6000 * 100) / 100;
  return Math.max(volume,weight);
}


/**
 * 获取随机的字符串
 * @param length
 * @returns {string}
 */
export function generateRandomString(length = 16) {
  let result = '';
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  const charactersLength = characters.length;
  for (let i = 0; i < length; i++) {
    result += characters.charAt(Math.floor(Math.random() * charactersLength));
  }
  return result;
}
